string decomposition